// pages/oneCard_more/oneCard_more.js
import {
  queryTempFunctionCode
} from '../../utils/login' 
import menuTree from './menuTree.js'
import allMenu from './allmenu.js'
import {saveMatter} from '../../utils/my'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    headHeight: 0,
    menuInfo: {},
    activeKey: 0,
    scrollTops: 0, // 要滚动的高度
    tabCur: 0, // 左边当前项
    rightCur: 0, // 用于实现左边联动右边
    isSearch: false,
    navs: [], //所有导航的集合
    navTree: menuTree,
    searchRes: []
  },

  /**
   * 生命周期函数--监听页面加载
   */

  onLoad(options) {
    // 把菜单结构打平 方便检索
    let temp = []
    this.data.navTree.forEach(item => {
      temp = temp.concat(item.arr);
    })
    this.setData({
      navs: temp
    })
  },
  tabNav(e) {
    let index = e.currentTarget.dataset.index;
    this.setData({
      tabCur: index,
      rightCur: index,
      // 实现左边自动滑动到某个位置 4表示自动滑动到 第五项 （4为索引值）
      scrollTops: (index - 4) * 50
    })
  },
  /**
   * 滑动右边对应左边菜单切换
   * 1、拿到该元素的高度，设定它的top和bottom
   * 2、判断滑动的距离是否大于 设定的top并小于设定的bottom，然后对应左边菜单的滑动
   */
  scrollLink(e) {
    let list = this.data.navTree
    let itemHeight = 0;
    for (let i = 0; i < list.length; i++) {
      //拿到每个左边的元素 并且设置他们的上下高度 
      let els = wx.createSelectorQuery().select("#scroll-" + i);
      els.fields({
        size: true
      }, function (res) {
        list[i].top = itemHeight;
        // 设置每一个右边元素在整个菜单的高度再加上元素本身的高度设置为bottom的高度
        itemHeight += res.height;
        list[i].bottom = itemHeight
      }).exec()
    }

    this.setData({
      navTree: list
    })

    // 拿到滚动的高度
    let scrollTop = e.detail.scrollTop;
    for (let i = 0; i < list.length; i++) {
      if (scrollTop > list[i].top && scrollTop < list[i].bottom) {
        // 判断当前的高度在那个右边的某个元素之间 
        // 如果判断在i元素之中，就改变左边当前项，并且转跳左边的位置
        this.setData({
          tabCur: i,
          scrollTops: (i - 4) * 50,
          activeKey: i
        })
        return false
      }
    }
  },
  // 搜索框
  search(e) {
    if (e.detail) {
      this.setData({
        isSearch: true
      })
      let temp = []
      allMenu.forEach(item => {
        if (item.name.indexOf(e.detail) != -1) {
          temp.push(item)
        }
      })
      this.data.navs.forEach(item => {
        if (item.name.indexOf(e.detail) != -1) {
          temp.push(item)
        }
      })
      this.setData({
        searchRes: temp
      })
    } else {
      this.setData({
        isSearch: false
      })
    };
  },
  cancel() {
    this.setData({
      isSearch: false,
      searchRes: []
    })
  },
  change(e) {
  },
  // 跳转小程序
  jumpPage(e){
    const item = e.mark.item;
    saveMatter(item.name) //保存事项
    if (item.type == 1) {
      wx.navigateTo({
        url: item.url
      })
    }
    if (item.type == 2) {
      queryTempFunctionCode(item.code).then(res => {
        wx.navigateTo({
          url: '/pages/web_h5/web_h5?url=' + encodeURIComponent(res.data)
        })
      })
    }
    if(item.type==4){
      wx.navigateToMiniProgram({
        shortLink: item.url,
        envVersion: 'release',
        success(res) {
          console.log("跳转小程序成功！", res);
        }
      })
    }
    if (item.type == 5) {
      wx.navigateToMiniProgram({
        appId: item.appId,
        envVersion: 'release',
        path: item.path || ''
      })
    }
  },
  backPage() {
    wx.navigateBack({
      delta: 1
    });
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    //设置头部字体与导航栏对齐
    const top = getApp()
    this.setData({
      menuInfo: top.geibartop.menuInfo,
      headHeight: top.globalData.headHeight,
    })
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})